package com.itheima.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.itheima.constant.MessageConstant;
import com.itheima.entity.PageResult;
import com.itheima.entity.QueryPageBean;
import com.itheima.entity.Result;
import com.itheima.pojo.Permission;
import com.itheima.service.PermissionService;
import com.sun.prism.Mesh;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("permission")
public class PermissionController {
   @Reference
   private PermissionService permissionService;

   /**
    * 添加权限
    * @param permission
    * @return
    */
   @RequestMapping("/add")
   public Result add(@RequestBody Permission permission) {
      try {
         permissionService.add(permission);
      } catch (Exception e) {
         e.printStackTrace();
         return new Result(false, MessageConstant.ADD_PERMISSION_FAIL);
      }
      return new Result(true, MessageConstant.ADD_PERMISSION_SUCCESS);
   }

   /**
    * 分页查询
    * @param queryPageBean
    * @return
    */
   @RequestMapping("/findPage")
   public PageResult findPage(@RequestBody QueryPageBean queryPageBean) {
      PageResult pageResult = permissionService.findPage(queryPageBean);
      return pageResult;
   }

   @RequestMapping("/deleteById/{id}")
   public Result deleteById(@PathVariable Integer id) {
      try {
         permissionService.deleteById(id);
      } catch (Exception e) {
         e.printStackTrace();
         return new Result(false, MessageConstant.DELETE_PERMISSION_FAIL);
      }
      return new Result(true, MessageConstant.DELETE_PERMISSION_SUCCESS);
   }

   @RequestMapping("/findById/{id}")
   public Result findById(@PathVariable Integer id) {
      try {
         Permission permission = permissionService.findById(id);
         return new Result(true, MessageConstant.QUERY_PERMISSION_SUCCESS, permission);
      } catch (Exception e) {
         e.printStackTrace();
         return new Result(false, MessageConstant.QUERY_PERMISSION_FAIL);
      }
   }

   @RequestMapping("/edit")
   public Result edit(@RequestBody Permission permission) {
      try {
         permissionService.edit(permission);
      } catch (Exception e) {
         e.printStackTrace();
         return new Result(false, MessageConstant.EDIT_PERMISSION_FAIL);
      }
      return new Result(true, MessageConstant.EDIT_PERMISSION_SUCCESS);
   }
}
